package jmine.tec.web.front.pages.requests.filter;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import jmine.tec.web.front.domain.BackOfficeRequestStatus;
import jmine.tec.web.front.domain.BackOfficeRequestType;
import jmine.tec.web.front.domain.BackOfficeRequestValue;
import bancosys.tec.utils.date.Date;

/**
 * Filters available for back office requests
 * 
 * @author lundberg
 */
public class BackOfficeRequestFilter implements Serializable {

    private BackOfficeRequestType type;

    private Date date;

    private BackOfficeRequestStatus status;

    private String requestingUser;

    private List<BackOfficeRequestValue<?>> propertyValues = new ArrayList<BackOfficeRequestValue<?>>();

    /**
     * @return the propertyValues
     */
    public List<BackOfficeRequestValue<?>> getPropertyValues() {
        return this.propertyValues;
    }

    /**
     * Clear current property values
     */
    public void clearPropertyValues() {
        this.propertyValues.clear();
    }

    /**
     * @param propertyValues the propertyValues to set
     */
    public void setPropertyValues(List<BackOfficeRequestValue<?>> propertyValues) {
        this.propertyValues = propertyValues;
    }

    /**
     * Add a value to the properties filter
     * 
     * @param value value to filter
     */
    public void addPropertyValue(BackOfficeRequestValue<?> value) {
        this.propertyValues.add(value);
    }

    /**
     * @return the type
     */
    public BackOfficeRequestType getType() {
        return this.type;
    }

    /**
     * @param type the type to set
     */
    public void setType(BackOfficeRequestType type) {
        this.type = type;
    }

    /**
     * @return the date
     */
    public Date getDate() {
        return this.date;
    }

    /**
     * @param date the date to set
     */
    public void setDate(Date date) {
        this.date = date;
    }

    /**
     * @return the status
     */
    public BackOfficeRequestStatus getStatus() {
        return this.status;
    }

    /**
     * @param status the status to set
     */
    public void setStatus(BackOfficeRequestStatus status) {
        this.status = status;
    }

    /**
     * @return the requestingUser
     */
    public String getRequestingUser() {
        return this.requestingUser;
    }

    /**
     * @param requestingUser the requestingUser to set
     */
    public void setRequestingUser(String requestingUser) {
        this.requestingUser = requestingUser;
    }

}
